/**
 * AI聊天润色提示词工具函数
 */
import { PolishType } from '../../types/text.ts';
import templatesData from '../../assets/templates/polishTemplates.json';

/**
 * 模板数据结构
 */
interface TemplateData {
  templates: Record<string, {
    prompt: string;
    name: string;
    description: string;
  }>;
  response_format: {
    standard: string;
    instruction: string;
  };
}

/**
 * 加载的模板数据
 */
const templates: TemplateData = templatesData;

/**
 * 为各种润色类型生成详细的提示词
 * @param polishType 润色类型
 * @param text 待处理的文本
 * @returns 完整的提示词
 */
export const getPolishPromptTemplate = (polishType: PolishType, text: string): string => {
  // 检查模板是否存在
  if (templates.templates[polishType]) {
    return templates.templates[polishType].prompt.replace('{{text}}', text);
  }

  // 默认使用通用润色模板
  return templates.templates.polish ? 
    templates.templates.polish.prompt.replace('{{text}}', text) : 
    `请润色以下文本，提高其质量和表达效果：\n\n${text}`;
};

/**
 * 为各种润色类型生成带有标准回复格式的详细提示词
 * @param polishType 润色类型
 * @param text 待处理的文本
 * @returns 完整的提示词，包含标准回复格式要求
 */
export const getEnhancedPolishPromptTemplate = (polishType: PolishType, text: string): string => {
  // 获取现有的润色提示
  const basePrompt = getPolishPromptTemplate(polishType, text);
  
  // 添加标准回复格式要求
  const formatInstruction = templates.response_format?.instruction || 
    `请使用以下格式回复：\n\n【润色结果】\n润色后的文本\n【/润色结果】\n\n只在【润色结果】标签内返回润色后的文本，不要添加任何解释、分析或其他内容。`;

  return `${basePrompt}\n\n${formatInstruction}`;
}; 